//
//  NSDate+Extension.swift
//  LW_Weibo
//
//  Created by 刘伟 on 16/7/16.
//  Copyright © 2016年 LWSpro. All rights reserved.
//

import UIKit

//需要一个转换时间模式的对象 因为时间的模式需要改变
let dt = NSDateFormatter()

extension NSDate {
    
    
    
    
    
    
    /*  逻辑:
    判断是不是今年
    是今年 那么判断是不是今天
    是今天 就判断是不是一分钟内(即一分钟之前)
    
    是一分钟之前就显示 "刚刚"
    
    
    不是一分钟之前,就判断是不是一小时之前
    是一小时之前 就显示 "XX分钟"
    
    
    不是一小时之前就显示
    "XX小时前"
    
    不是今天,判断是不是昨天
    是昨天就显示 "昨天 6:36"
    
    不是昨天 就显示
    "3-16 3:36"
    
    
    
    
    不是今年 那么显示的时间模式
    2015-10-1
    
    
    */
    
    //在这里把传进来的字符串 转换成NSDate类型  然后返回NSDate 类型的对象即可
    class func sinaDate(created_at: String) -> NSDate {
        
        
        //信息本地化  让时间显示的是英国时间
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        //  指定格式化方式 z 是时区
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        
        
        //将字符串转换成NSDate类型
        let createDate = dt.dateFromString(created_at)
        
        return createDate!
        
    }
    
    
    
    
    var timeString: String? {
        
        
        //判断是不是今年  我们自己提供一个函数进行判断  传回来的是Bool值
        
        if isThisYear(self) { //是今年
            
            //判断是不是今天
            //日历对象  日历上面可以清楚的判断日期
            let calendar = NSCalendar.currentCalendar()
            
            
            if calendar.isDateInToday(self) {//如果是今天
                
                //判断是不是一分钟前
                
                //  是今天
                //  怎么计算发微博时间距离当前时间差多少秒
                //                let timeinterval = abs(createAtDate.timeIntervalSinceDate(NSDate()))
                
                //把距离现在多少时间兑换成秒数 abs 是绝对值的意思
                let timeinterval = abs(self.timeIntervalSinceNow)
                
                if timeinterval < 60 { //如果小于 60 秒 即一分钟前
                    
                    return "刚刚"  //走到这里就不会往下走了 代码就停止了
                    
                }else if timeinterval < 60 * 60 { //一小时前
                    
                    return "\(Int(timeinterval / 60)) 分钟前"
                    
                }else {
                    
                    return "\(Int(timeinterval / 3600)) 小时前"
                    
                }
                
                
                
                
            }else if calendar.isDateInYesterday(self) {//昨天
                
                dt.dateFormat = "昨天 HH:mm"
                
                
            }else { //不是昨天
                
                
                dt.dateFormat = "MM-dd HH:mm"
                
                
            }
            
            
            
            
        }else { //不是今年
            
            //更改模式
            dt.dateFormat = "yyyy-MM-dd HH:mm"
            
            
        }
        
  
        
        return dt.stringFromDate(self)
        

        
        
    }
    
  


//参数 接收传入的时间 和今年进行对比
private func isThisYear(createDate: NSDate) -> Bool {
    
    
    //只显示年份
    dt.dateFormat = "yyyy"
    
    //信息本地化  让时间显示的是英国时间
    dt.locale = NSLocale(localeIdentifier: "en_US")
    
    
    //把传过来的时间对象转换成字符串 这样才能进行比较 转换之后只会显示年份
    let createDateYear = dt.stringFromDate(createDate)
    
    //将当前时间转换成字符串
    let currentDateYear = dt.stringFromDate(NSDate())
    
    
    
    return createDateYear == currentDateYear
    
    
}
















}